import { useRouter } from 'next/router' import ErrorPage from 'next/error' import Head from 'next/head' import { GetStaticPaths, GetStaticProps } from 'next' import Container from '~/components/blog/container' import PostBody from '~/components/blog/post-body' import MoreStories from '~/components/blog/more-stories' import Header from '~/components/blog/header' import PostHeader from '~/components/blog/post-header' import SectionSeparator from '~/components/blog/section-separator' import Layout from '~/components/blog/layout' import PostTitle from '~/components/blog/post-title' import Tags from '~/components/blog/tags' import { getAllPostsWithSlug, getPostAndMorePosts } from '~/lib/api' import { CMS_NAME } from '~/lib/constants' export default function Post({ post, posts, preview }: { post: any, posts: any, preview: any }) { const router = useRouter() const morePosts = posts?.edges if (!router.isFallback && !post?.slug) { return } return (
{router.isFallback ? ( Loading… ) : ( <>
{post.title} | Next.js Blog Example with {CMS_NAME}
{post.tags.edges.length > 0 && }
{morePosts.length > 0 && } )} ) } export const getStaticProps: GetStaticProps = async ({ params, preview = false, previewData, }) => { const data = await getPostAndMorePosts(params?.slug, preview, previewData) return { props: { preview, post: data.post, posts: data.posts, }, revalidate: 10, } } export const getStaticPaths: GetStaticPaths = async () => { const allPosts = await getAllPostsWithSlug() return { paths: allPosts.edges.map(({ node }: any) => `/posts/${node.slug}`) || [], fallback: true, } }